package reflect;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;

/**
 * 利用反射实现泛型擦出
 */
public class GenericDemo {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        ArrayList<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        //list.add(100);编译时无法加载
        //运用反射技术,把整数100添加到list集合

        //先获取字节码对象
        Class<?> cls = list.getClass();
        //获取ArrayList对象的add方法
        Method addMethod = cls.getDeclaredMethod("add", Object.class);
        //通过反射执行方法
        addMethod.invoke(list,100);
        System.out.println(list);
        ArrayList<Object> list1 = new ArrayList<>();

    }
}
